"""
监控指标相关CRUD操作模块

该模块提供监控指标相关的数据库操作功能，包括创建、查询等操作。
"""

from sqlalchemy.orm import Session
from app.models.metric import Metric
from app.schemas.metric import MetricCreate
from app.core.performance_monitor import monitor_db_performance
from typing import List, Optional
import json

@monitor_db_performance("create_metric")
def create_metric(db: Session, metric: MetricCreate) -> Metric:
    """创建监控指标记录
    
    Args:
        db (Session): 数据库会话对象
        metric (MetricCreate): 监控指标创建模型
        
    Returns:
        Metric: 创建的监控指标对象
    """
    db_metric = Metric(**metric.dict())
    db.add(db_metric)
    db.commit()
    db.refresh(db_metric)
    return db_metric

@monitor_db_performance("get_metrics_by_machine_id")
def get_metrics_by_machine_id(db: Session, machine_id: int, limit: int = 100) -> List[Metric]:
    """根据机器ID获取监控指标历史数据
    
    Args:
        db (Session): 数据库会话对象
        machine_id (int): 机器ID
        limit (int): 返回记录数限制，默认100条
        
    Returns:
        List[Metric]: 监控指标列表
    """
    return db.query(Metric).filter(Metric.machine_id == machine_id).order_by(Metric.timestamp.desc()).limit(limit).all()